package improtant;

import java.util.ArrayList;
import java.util.Stack;
//给定一个只包括 '('，')'，'{'，'}'，'['，']' 的字符串，判断字符串是否有效。
//有效字符串需满足：
//
//左括号必须用相同类型的右括号闭合。
//左括号必须以正确的顺序闭合。
public class isValid {
    public boolean isValid(String str){
        ArrayList<String> strList = new ArrayList<>();
        char[] strArr=str.toCharArray();//字符串转数组
        Stack<String> stack = new Stack<>();
        for(char c:strArr){//char转arrlist
            String s=String.valueOf(c);
            strList.add(s);
        }
        for(String s:strList){//看看有没有问题
            System.out.print(s+" ");
        }

        System.out.println();

        for(String s:strList){
            if (s.equals("{")||s.equals("[")||s.equals("(")){
                stack.push(s);
                System.out.println("塞入："+stack.peek());
            }else if(s.equals("}")||s.equals("]")||s.equals(")")){
                if (stack.empty()){
                    System.out.println("右边括号开头了:"+s);
                    return false;
                }
                System.out.println("踢掉："+stack.peek());
                stack.pop();
            }
        }
        if (stack.empty()){
            System.out.println("空了");
            return true;
        }else {
            System.out.print("没空,剩下:");
            while (!stack.empty()){
                System.out.print("  "+stack.pop());
            }
            System.out.println();
            return false;
        }
    }

    public static void main(String args[]){
        isValid isvalid = new isValid();
        boolean t= isvalid.isValid("{{fffgf}[](((((}");
        System.out.println(t);
    }
}
